Conventionally, floating-point arithmetic operation for approximately performing real number arithmetic operation in a computer has been used. In the floating-point arithmetic operation, a real number is approximated and expressed in a floating-point number, and an arithmetic operation result is approximated to a floating-point number in accordance with a rounding mode specified in advance. Five kinds of rounding modes are defined in IEEE754. For example, the following two kinds of rounding modes are defined. One is a rounding-up mode, and the other is a rounding-down mode.
In the rounding-up mode, a process for approximating an arithmetic operation result to a smallest floating-point number among floating-point numbers equal to or larger than the arithmetic operation result is performed. Hereinafter, the rounding-up process will be denoted by Δ. In the rounding-down mode, a process for approximating an arithmetic operation result to a largest floating-point number among floating-point numbers equal to or smaller than the arithmetic operation result is performed. Hereinafter, the rounding-down process will be denoted by ∇.
Though a floating-point functional unit capable of executing arithmetic operation in these rounding modes has been realized, there is a problem that arithmetic operation accuracy cannot be acquired after performing arithmetic operation.
On the contrary, arithmetic operation called machine interval arithmetic operation is proposed, by which arithmetic operation accuracy using floating-point arithmetic operation can be acquired. In the machine interval arithmetic operation, a machine interval expressed by a pair of a lower-limit value and an upper-limit value is used. The machine interval is defined as shown by the following equation (1).Machine interval [x]=[∇x, Δx]  Equation (1)
A central value x and an error radius r can be determined from the machine interval [x], as shown by the following equations (2) and (3).
                    x        =                                            Δ              ⁢                                                          ⁢                              x                _                                      +                          ∇                              x                _                                              2                                    Equation        ⁢                                  ⁢                  (          2          )                                        r        =                                            Δ              ⁢                                                          ⁢                              x                _                                      -                          ∇                              x                _                                              2                                    Equation        ⁢                                  ⁢                  (          3          )                    
For example, it is possible to adopt the central value x as an approximate value or a true value of an arithmetic operation result and use the error radius r for accuracy evaluation of the arithmetic operation result.
Four basic arithmetic operations are defined as shown by the following equations (4) to (7).[x]+[y]=[∇(x+y),Δ(x+y)]  Equation (4)[x]−[y]=[∇(x−y),Δ(x−y)]  Equation (5)[x]×[y]=[min{∇(x×y),∇(x×y),∇(x×y),∇(x×y)},max{Δ(x×y),Δ(x×y),Δ(x×y),Δ(x×y)}]  Equation (6)[x]+[y]=[min{∇(x+y),∇(x+y),∇(x+y),∇(x+y)},max{Δ(x+y),Δ(x+y),Δ(x+y),Δ(x+y)}]  Equation (7)
A functional unit which realizes the four basic arithmetic operations is also proposed.
An inner product Σ[x]×[y] of vectors X and Y each element of which is constituted by a machine interval can be calculated as shown by the following equation (8).Σ[x]×[y]=[∇Σ∇(x×y),ΔΣΔ(x×y)]  Equation (8)
On the other hand, an SIMD (single instruction multiple data) functional unit which performs same arithmetic operation for a plurality of pieces of data at the same time has been conventionally used to realize high-speed arithmetic operation of a great amount of data. By using a floating-point functional unit as each of functional units constituting the SIMD functional unit, an SIMD floating-point functional unit can be realized. There is, however, a problem that arithmetic operation accuracy cannot be obtained after performing arithmetic operation.